package persi.futbol.formacion;

import java.util.ArrayList;
import java.util.List;

import javax.swing.text.Position;

import persi.futbol.Equipo;
import persi.futbol.jugador.Jugador;
import persi.futbol.jugador.Titular;

import enums.Posicion;

public class FormacionStrategyImpl implements FormacionStrategy {

	private List<Posicion> posicion;

	public FormacionStrategyImpl(List<Posicion> posicion) {
		this.posicion = posicion;
	}

	public List<Posicion> getPosicion() {
		return posicion;
	}

	public void setPosicion(List<Posicion> pocision) {
		this.posicion = pocision;
	}


	/**
	 * Elije como titular el mejor jugador disponible para su lista de
	 * posiciones No puede elegir para dos posiciones el mismo jugador
	 */
	public Formacion armarFormacion(Equipo e) {
		List<Jugador> jugadores = new ArrayList<Jugador>(e.getJugadores());
		Formacion formacion = new Formacion();
		for (Posicion posicionActual : this.getPosicion()) {
			int max=0;
			Jugador jugadorMax=jugadores.get(0);
			for (Jugador jugador : jugadores) {
				int valorHabilidad = jugador.getValorHabilidad(posicionActual);
				if(max<valorHabilidad){
					max=valorHabilidad;
					jugadorMax=jugador;
				}
			}
			jugadores.remove(jugadorMax);
			formacion.getTitulares().add(new Titular(jugadorMax,posicionActual));
			
		}
		formacion.getSuplentes().addAll(jugadores);
		return formacion;
	}

}
